package com.mysterymall.Service;

import com.mysterymall.Common.Utils.Result;
import com.mysterymall.Model.Dto.BlindBoxGroupDto;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletRequest;

/**
 * @ClassName com.mysterymall.Service
 * @Description
 * @Author HuangWX
 * @Time 2023/11/16  11:50
 */
public interface BlindBoxGroupService {


    /**
     * 新建盲盒分组 (管理员)
     *
     * @param blindBoxGroupDto 盲盒分组信息
     * @return Result
     */
    Result addBlindBoxGroup(BlindBoxGroupDto blindBoxGroupDto);


    /**
     * 查询盲盒分组 (管理员)
     *
     * @param currIndex 当前页
     * @param pageSize  每页条数
     * @return Result
     */
    Result getBlindBoxGroup(Integer currIndex, Integer pageSize);


    /**
     * 删除盲盒分组 (管理员)
     *
     * @param blindBoxGroupId 盲盒分组id
     * @return Result
     */
    Result deleteBlindBoxGroup(String blindBoxGroupId);


    /**
     * 查询盲盒分组详情 (管理员)
     *
     * @param blindBoxGroupId 盲盒分组id
     * @return Result
     */
    Result getBlindBoxGroupMonocle(String blindBoxGroupId);

    /**
     * 修改盲盒分组 (管理员)
     *
     * @param blindBoxGroupDto 盲盒分组信息
     * @return Result
     */
    Result updateBlindBoxGroup(BlindBoxGroupDto blindBoxGroupDto);

    /**
     * 查询盲盒分组 (用户)
     *
     * @return Result
     */
    Result getShowBoxGroup(HttpServletRequest request);

    /**
     * 查询盲盒分组中的商品 (用户) -- 气泡效果
     *
     * @param groupId 盲盒分组id
     * @return Result
     */
    Result getBoxGroupGoods(String groupId);

    /**
     * 查询盲盒详细信息
     *
     * @param blindBoxGroupId 盲盒分组id
     * @return Result
     */
    Result getShowBlindBoxGroupMonocle(String blindBoxGroupId, HttpServletRequest request);

    /**
     * 查询盲盒分组中不同品质的商品
     *
     * @param blindBoxGroupId 盲盒分组id
     * @return Result
     */
    Result getBlindBoxGroupGoods(String blindBoxGroupId, HttpServletRequest request);

    /**
     * 查询我的盲盒分组
     *
     * @return Result
     */
    Result getMyBlindBoxGroup();


    /**
     * 开启盲盒分组
     *
     * @return Result
     */
    Result openBlindBoxTest(String id, Integer number, HttpServletRequest request);


    /**
     * 开启盲盒分组
     *
     * @return Result
     */
    Result openBlindBox(String id, Integer number, HttpServletRequest request);


    /**
     * 获取我的订单盲盒
     *
     * @param orderId
     * @param request
     * @return
     */
    Result getMyBoxList(String orderId, HttpServletRequest request);


    /**
     * 获取我的盲盒
     *
     * @param current  当前页
     * @param pageSize 每页条数
     * @param request  请求头
     * @return Result
     */
    Result getMyBox(Integer current, Integer pageSize, HttpServletRequest request);
}
